<?php

/**
 * aplicaciones actions.
 *
 * @package    auip
 * @subpackage aplicaciones
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class aplicacionesActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    //$this->aplicacion_becas = Doctrine_Core::getTable('AplicacionBeca')
    //  ->createQuery('a')
    //  ->execute();
    //  $this->getUser()->setAttribute('email', Mensajero::desecriptar($request->getParameter('email')));
      $this->aplicacion_becas = AplicacionBecaTable::instancia($this->getUser()->getAttribute('email'));
      
      if($request->hasParameter('id'))
      {
          $this->getUser()->setAttribute('id', $request->getParameter('id'));
          //$this->forward('aplicaciones', 'new');
          $this->redirect('aplicaciones/new');
      }
  }

  public function executeAccion(sfWebRequest $request) {

       $this->getResponse()->setContentType('application/json');
       $string = $request->getParameter('q');       
       $req = Doctrine::getTable('AplicacionBeca')->miMetodo($string);       
       asort($req);//ordenar el resultado si no se hace en la consulta
       return $this->renderText(html_entity_decode(json_encode($req),ENT_QUOTES,'utf-8'));    
  }
   
  /***********************************************************************************/ 
//  public function executeSource(sfWebRequest $request)
//  {
//      $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->execute();
//      $opciones = array();
//      foreach ($entidades as $destino) 
//      {
//           $opciones[]= array($destino->getId() => $destino->getNombre());
//      }
//      //echo $opciones;
//      echo json_encode($opciones);
//  }

  public function procesa()
  {   
         //PROCESAAAAAAAAAAAAAAAAAAA
         $tipo_beca = BecaTable::getBecaEncontrada($this->getUser()->getAttribute('id'))->getTipoBeca()->getId();
      $correoElectronico = $this->getUser()->getAttribute('email');
      $usu = UsuarioTable::getUsuarioEncontradoTable($correoElectronico);
      
      $id = $usu[0]['entidad_origen'];
      //--NONE-- $request->getParameter('id_entidad');
      
      //$opciones = '<option value="0"></option>';
      
      if (isset($id))
        { 
          /*DE AQUI EN ADELANTE SE ESPECIFICAN LOS DIFERENTES TIPOS DE BECAS*/
          
          if ($tipo_beca == 1)/*Beca de Movilidad (instituciones asociadas AUIP)*/
          {
                $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();                
                //la siguiente consulta excluye el pais de la institucion seleccionada en el combo entidad origen
                $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.pais_id != ?', $entidad_origen[0]['pais_id'])->execute();

                $this->opciones = $entidades;
                //$opciones = $this->opciones;

                //echo $this->opciones;               
          }          
          
          if ($tipo_beca == 2)/*Beca de Movilidad entre la universidad de andalucia e ibaroamerica*/
          {            
            $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
            
              //hace la consulta basandose en el codigo de la region a la cual pertenece la universidad       
            if($entidad_origen[0]['region_id'] == 2766)//si el usuario escogio una universidad del region de andalucia, el segundo combo debe llenarse con las entidades diferentes a la region
            {      //la siguiente consulta devuelve todas las instituciones que no son de la region de andalucia         
                $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id != ?', $entidad_origen[0]['region_id'])->execute();
            }
            elseif($entidad_origen[0]['region_id'] != 2766)//se escogio una universidad de otra region diferente entonces debe cargar solo andalucia
            {   // la siguiente consulta devuelve las instituciones que son de la region de andalucia
                $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id = 2766')->execute();
            }
                //echo ($entidad_origen[0]['region_id']);
                //print_r($entidad_origen);                

                $this->opciones = $entidades;
                //$opciones = $this->opciones;
                //echo $this->opciones;    
           }//FIN SI CONVOCATORIA TIPO 2
           
           if ($tipo_beca == 3)/*Beca para cursar masteres en la universidad de castilla y leon*/
           {   
               $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
                //la siguiente consulta devuelve
                $entidades_destino = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id = 2777')->execute();
                

                $this->opciones = $entidades_destino;
                //       $opciones = $this->opciones;
         //echo $this->opciones;    
           }//FIN SI CONVOCATORIA TIPO 3
           
           if ($tipo_beca == 4)/*Beca de movilidad entre la universidad de extremadura y universidades iberoamericanas*/
           {   
               $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
               //hace la consulta basandose en el codigo de la region a la cual pertenece la universidad       
               if($entidad_origen[0]['region_id'] == 2783)
               {
                    $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id != ?', $entidad_origen[0]['region_id'])->execute();
               }
               elseif($entidad_origen[0]['region_id'] != 2783)//se escogio una universidad de otra region diferente entonces debe cargar solo andalucia
               {
                    $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id = 2783')->execute();
               }               

                $this->opciones = $entidades;
                //   $opciones = $this->opciones;
             //echo $this->opciones;    
                //print_r($entidad_origen);
           }//FIN SI CONVOCATORIA TIPO 4
           
           if ($tipo_beca == 5)/*Beca de movilidad entre la universidad de extremadura y universidades iberoamericanas*/
           {   
               $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
               //hace la consulta basandose en el codigo de la region a la cual pertenece la universidad       
               $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = 20')->execute();

                $this->opciones = $entidades;
                //  $opciones = $this->opciones;
              //echo $this->opciones;    
           }//FIN SI CONVOCATORIA TIPO 5
         }//SIN SI ISSET
  }

  public function executeProcesa(sfWebRequest $request)
  {   
      $tipo_beca = BecaTable::getBecaEncontrada($this->getUser()->getAttribute('id'))->getTipoBeca()->getId();
      $correoElectronico = $this->getUser()->getAttribute('email');
      $usu = UsuarioTable::getUsuarioEncontradoTable($correoElectronico);
      
      $id = $usu[0]['entidad_origen'];
      //--NONE-- $request->getParameter('id_entidad');
      
      //$opciones = '<option value="0"></option>';
      
      if (isset($id))
        { 
          /*DE AQUI EN ADELANTE SE ESPECIFICAN LOS DIFERENTES TIPOS DE BECAS*/
          
          if ($tipo_beca == 1)/*Beca de Movilidad (instituciones asociadas AUIP)*/
          {
                $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();                
                //la siguiente consulta excluye el pais de la institucion seleccionada en el combo entidad origen
                $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.pais_id != ?', $entidad_origen[0]['pais_id'])->execute();
                foreach ($entidades as $entidad) 
                {
                    $opciones.='<option value="'.$entidad->getId().'">'.$entidad->getNombre().'</option>';
                }
                echo $opciones;               
          }          
          
          if ($tipo_beca == 2)/*Beca de Movilidad entre la universidad de andalucia e ibaroamerica*/
          {            
            $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
            
              //hace la consulta basandose en el codigo de la region a la cual pertenece la universidad       
            if($entidad_origen[0]['region_id'] == 2766)//si el usuario escogio una universidad del region de andalucia, el segundo combo debe llenarse con las entidades diferentes a la region
            {      //la siguiente consulta devuelve todas las instituciones que no son de la region de andalucia         
                $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id != ?', $entidad_origen[0]['region_id'])->execute();
            }
            elseif($entidad_origen[0]['region_id'] != 2766)//se escogio una universidad de otra region diferente entonces debe cargar solo andalucia
            {   // la siguiente consulta devuelve las instituciones que son de la region de andalucia
                $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id = 2766')->execute();
            }
                //echo ($entidad_origen[0]['region_id']);
                //print_r($entidad_origen);                
                foreach ($entidades as $entidad) 
                {
                    $opciones.='<option value="'.$entidad->getId().'">'.$entidad->getNombre().'</option>';
                }
                echo $opciones;
           }//FIN SI CONVOCATORIA TIPO 2
           
           if ($tipo_beca == 3)/*Beca para cursar masteres en la universidad de castilla y leon*/
           {   
               $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
                //la siguiente consulta devuelve
                $entidades_destino = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id = 2777')->execute();
                
                foreach ($entidades_destino as $destino) 
                {
                    $opciones.='<option value="'.$destino->getId().'">'.$destino->getNombre().'</option>';
                }
                echo $opciones;
           }//FIN SI CONVOCATORIA TIPO 3
           
           if ($tipo_beca == 4)/*Beca de movilidad entre la universidad de extremadura y universidades iberoamericanas*/
           {   
               $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
               //hace la consulta basandose en el codigo de la region a la cual pertenece la universidad       
               if($entidad_origen[0]['region_id'] == 2783)
               {
                    $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id != ?', $entidad_origen[0]['region_id'])->execute();
               }
               elseif($entidad_origen[0]['region_id'] != 2783)//se escogio una universidad de otra region diferente entonces debe cargar solo andalucia
               {
                    $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id = 2783')->execute();
               }               
               foreach ($entidades as $destino) 
               {
                    $opciones.='<option value="'.$destino->getId().'">'.$destino->getNombre().'</option>';
               }
                echo $opciones;
                //print_r($entidad_origen);
           }//FIN SI CONVOCATORIA TIPO 4
           
           if ($tipo_beca == 5)/*Beca de movilidad entre la universidad de extremadura y universidades iberoamericanas*/
           {   
               $entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = ?', $id)->execute()->toArray();
               //hace la consulta basandose en el codigo de la region a la cual pertenece la universidad       
               $entidades = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.id = 20')->execute();
               foreach ($entidades as $destino) 
               {
                    $opciones.='<option value="'.$destino->getId().'">'.$destino->getNombre().'</option>';
               }
                echo $opciones;
           }//FIN SI CONVOCATORIA TIPO 5
         }//SIN SI ISSET
  }
  
  public function executeNew(sfWebRequest $request)
  { 
        if(!$apli = AplicacionBecaTable::getApli($this->getUser()->getAttribute('email'),$this->getUser()->getAttribute('id')) )
	{
            
        }
	else
        {
            $this->redirect($this->generateUrl('default', array('module' => 'aplicaciones','action' => 'edit', 'beca_id'=> $this->getUser()->getAttribute('id'), 'usuario_id'=> $this->getUser()->getAttribute('email') )));
	}
        $this->unaBeca =  BecaTable::getBecaEncontrada2($this->getUser()->getAttribute('id'));
        $this->unUsuario = UsuarioTable::getUsuarioEncontrado($this->getUser()->getAttribute('email'));              
        /*******************************************************************************************************************************/
         //la siguiente consulta trae todas las instituciones sin restriccion  alguna
         $this->entidad_origen = Doctrine_Core::getTable('Entidad')->createQuery('a')->execute();
         
         //la siguiente consulta trae las instituciones de iberoamerica sin tener encuenta la region de castilla y leon          
         //$this->entidad_origen1 = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.region_id != 2777')->execute();
         $this->entidad_origen1 = Doctrine_Core::getTable('Entidad')->createQuery('a')->addWhere('a.pais_id != 63')->addWhere('a.pais_id != 158')->execute();
        
         //la siguiente consulta trae las universidades de latinoamerica, portugar y las de la region de extremadura                
         $query = "SELECT id, nombre FROM entidad WHERE (pais_id <> 63) UNION SELECT id, nombre FROM entidad WHERE (region_id = 2783) ORDER BY(nombre);"; //definimos la consulta
         $con = Doctrine_Manager::getInstance()->connection();//recuperamos el singleton de la conexión
         $resultado = $con->execute($query);//ejecutamos la consulta        
         $this->entidad_origen2 = $resultado->fetchAll();//devuelver un arreglo de arreglos       
         
         //la siguiente consulta trae las universidades de latinoamerica, portugal y españa excepto la universidades de brasil
         $query = "SELECT id, nombre FROM entidad WHERE (pais_id <> 29) UNION SELECT id, nombre FROM entidad WHERE (id = 19) ORDER BY(nombre);"; //definimos la consulta
         $con = Doctrine_Manager::getInstance()->connection();//recuperamos el singleton de la conexión
         $resultado = $con->execute($query);//ejecutamos la consulta        
         $this->entidad_origen3 = $resultado->fetchAll();//devuelver un arreglo de arreglos
         
		$this->procesa();
         
         
   }
   public function executeCapturar(sfWebRequest $request)
   {
       $this->getUser()->setAttribute('id_convocatoria', $request->getParameter('id_b'));
       $this->getUser()->setAttribute('id_usuario', $request->getParameter('id_u'));
       //$this->getUser()->setAttribute('id_entidad_org', $request->getParameter('id_entidad_origen'));
       $this->getUser()->setAttribute('id_entidad_des', $request->getParameter('id_entidad_destino'));
       //$this->getUser()->setAttribute('id_titulo', $request->getParameter('titulo'));
       //$this->getUser()->setAttribute('id_cargo', $request->getParameter('cargo'));
       $this->getUser()->setAttribute('id_actividades', $request->getParameter('actividades'));
       $this->getUser()->setAttribute('id_informacion', $request->getParameter('informacion'));   
       
       
   }
   public function executeContinuar(sfWebRequest $request)
   {          
       $valor1 = $this->getUser()->getAttribute('id_convocatoria');
       $valor2 = $this->getUser()->getAttribute('id_usuario');
       //$valor3 = $this->getUser()->getAttribute('id_entidad_org');
       $valor4 = $this->getUser()->getAttribute('id_entidad_des');
       //$valor5 = $this->getUser()->getAttribute('id_titulo');
       //$valor6 = $this->getUser()->getAttribute('id_cargo');
       $valor7 = $this->getUser()->getAttribute('id_actividades');
       $valor8 = $this->getUser()->getAttribute('id_informacion');
       
       /********************************************************************************/
       $this->getUser()->setAttribute('id_convocatoria', '');
       $this->getUser()->setAttribute('id_usuario', '');
       //$this->getUser()->setAttribute('id_entidad_org','' );
       $this->getUser()->setAttribute('id_entidad_des','' );
       //$this->getUser()->setAttribute('id_titulo', '');
       //$this->getUser()->setAttribute('id_cargo', '');
       $this->getUser()->setAttribute('id_actividades', '');
       $this->getUser()->setAttribute('id_informacion', ''); 
       $this->Guardardocumento($valor1, $valor2, $valor4, $valor7, $valor8);
       
       $this->redirect('documentos/new');       
   }
  protected function Guardardocumento($id_convocatoria, $id_usuario, $id_entidad_d, $actividades, $informacion)  
  {  
     //ESTA FUNCION GUARDA LA INFORMACION DEL DOCUMENTO EN LA BASE DATOS
        $nueva_aplicacion = new AplicacionBeca();
       $nueva_aplicacion->setBecaId($id_convocatoria);
       $nueva_aplicacion->setUsuarioId($id_usuario);
       //$nueva_aplicacion->setEntidadOrigen($id_entidad_o);
       $nueva_aplicacion->setEntidadDestino($id_entidad_d);
       //$nueva_aplicacion->setTitulo($titulo);
       //$nueva_aplicacion->setCargo($valor6);
       $nueva_aplicacion->setActividades($actividades);
       $nueva_aplicacion->setInformacionAdicional($informacion);
       $nueva_aplicacion->save();    
  }
  /***********************************************************************************/ 
  public function executeShow(sfWebRequest $request)
  {
    $this->aplicacion_beca = Doctrine_Core::getTable('AplicacionBeca')->find(array($request->getParameter('beca_id'), $request->getParameter('usuario_id')));
    $this->forward404Unless($this->aplicacion_beca);
    $this->procesa();
  }
  

  public function executeotroNew(sfWebRequest $request)
  {      
  }
   
  public function executePrueba(sfWebRequest $request)
  {
      $id_entidad_origen = $this->getRequestParameter('id0');
      $id_entidad_destino = $this->getRequestParameter('id1');
      $id_pais_entidad_origen = EntidadTable::geteEntidadEncontrada($id_entidad_origen)->getPaisId();
      $id_pais_entidad_destino = EntidadTable::geteEntidadEncontrada($id_entidad_destino)->getPaisId();   
      if ($id_pais_entidad_origen == $id_pais_entidad_destino) 
      {
          echo 'NO PUEDEN SER IGUALES';
      }
      else 
      {
          echo '';
      }      
  }
  
  public function executeCreate(sfWebRequest $request)
  {
      $this->aplicacion_beca = new AplicacionBeca();   
      $this->aplicacion_beca->setBecaId($this->getUser()->getAttribute('id'));
      $this->aplicacion_beca->setBeca(BecaTable::getBecaEncontrada2($this->getUser()->getAttribute('id')));
      $this->aplicacion_beca->setUsuarioId($this->getUser()->getAttribute('email'));
      $this->forward404Unless($this->aplicacion_beca);      
      $this->forward404Unless($request->isMethod(sfRequest::POST));
      $this->form = new AplicacionBecaForm($this->aplicacion_beca);
    //$this->form = new AplicacionBecaForm();
    $this->processForm($request, $this->form);

    $this->setTemplate('new');
             $this->procesa();

  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($aplicacion_beca = Doctrine_Core::getTable('AplicacionBeca')->find(array($request->getParameter('beca_id'),
              $request->getParameter('usuario_id'))), sprintf('Object aplicacion_beca does not exist (%s).', $request->getParameter('beca_id'),
              $request->getParameter('usuario_id')));
    $this->form = new AplicacionBecaForm($aplicacion_beca);
    $this->getUser()->setAttribute('id', $request->getParameter('beca_id'));
    $this->getUser()->setAttribute('nom_beca', BecaTable::getBecaEncontrada($this->getUser()->getAttribute('id'))->getNombre());        
    $this->getUser()->setAttribute('nom_uni', BecaTable::getBecaEncontrada($this->getUser()->getAttribute('id'))->getEntidad()->getNombre());
             $this->procesa();

  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($aplicacion_beca = Doctrine_Core::getTable('AplicacionBeca')->find(array($request->getParameter('beca_id'),
              $request->getParameter('usuario_id'))), sprintf('Object aplicacion_beca does not exist (%s).', $request->getParameter('beca_id'),
              $request->getParameter('usuario_id')));
    $this->form = new AplicacionBecaForm($aplicacion_beca);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
             $this->procesa();

  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($aplicacion_beca = Doctrine_Core::getTable('AplicacionBeca')->find(array($request->getParameter('beca_id'),
              $request->getParameter('usuario_id'))), sprintf('Object aplicacion_beca does not exist (%s).', $request->getParameter('beca_id'),
              $request->getParameter('usuario_id')));
    $aplicacion_beca->delete();

    $this->redirect('aplicaciones/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));    
    if ($form->isValid())
    {
      
      //$this->aplicacion_beca = $form->save();      
      $aplicacion_beca = $form->save();      
      //$this->redirect('aplicaciones/edit?beca_id='.$aplicacion_beca->getBecaId().'&usuario_id='.$aplicacion_beca->getUsuarioId());
      //$this->redirect('documentos/new');    
      $this->getUser()->setAttribute('beca_id', $aplicacion_beca->getBecaId());
      $this->getUser()->setAttribute('usuario_id', $aplicacion_beca->getUsuarioId());
      //$this->redirect($this->generateUrl('default', array('module' => 'documentos','action' => 'new', 'id'=>$this->getUser()->getAttribute('id'))));                                           
	$this->redirect('documentos/new');
    }
  }
}
